package com.core.dao;

import java.util.Date;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.core.base.dao.BaseHibernateDao;
import com.core.model.EnumItem;
import com.core.util.CollectionUtils;

/**
 * 枚举项DAO
 * 
 * @author pt-chenqw
 *
 */
@Repository("enumItemDAO")
public class EnumItemDAO extends BaseHibernateDao<EnumItem>{
	
	/**
	 * 根据关键字查询枚举项列表
	 * @param enumword
	 * @return
	 */
	public List<EnumItem> getEnumItemByEnumword(String enumword){
		String hql = "from EnumItem where enumword = ? and status = '1'";
		return find(hql, enumword);
	}
	
	/**
	 * 根据enumword 和 code查询枚举项
	 * @param enumword
	 * @param code
	 * @return
	 */
	public EnumItem getEnumItemByEnumWordAndCode(String enumword,String code){
		String hql = "from EnumItem where enumword = ? and code = ?";
		return findOne(hql, enumword, code);
	}
	
	/**
	 * 根据ID查询
	 * @param id
	 * @return
	 */
	public EnumItem getEnumItemByID(Integer id){
		String hql = "from EnumItem where id = ?";
		return findOne(hql, id);
	}
	
	/**
	 * 新增
	 * @param enumItem
	 */
	public void addEnumItem(EnumItem enumItem){
		String hql = "from EnumItem where enumword= ?";
		List<EnumItem> items = find(hql, enumItem.getEnumword());
		if(CollectionUtils.empty(items)){
			enumItem.setSeqno(1);
		}else{
			enumItem.setSeqno(items.size()+1);
		}
		enumItem.setCreatetime(new Date());
		enumItem.setUpdatetime(new Date());
		save(enumItem);
	}
	
	/**
	 * 更新
	 * @param enumItem
	 */
	public void updateEnumItem(EnumItem enumItem){
		EnumItem item = getEnumItemByID(enumItem.getId());
		item.setRemark(enumItem.getRemark());
		item.setStatus(enumItem.getStatus());
		item.setName(enumItem.getName());
		item.setUpdatetime(new Date());
		update(item);
	}
	
	/**
	 * 根据ID删除
	 * @param id
	 */
	public void deleteEnumItemByID(Integer id){
		EnumItem enumItem = getEnumItemByID(id);
		delete(enumItem);
	}
	
	/**
	 * 根据枚举项code查询枚举项信息
	 * @param code
	 * @return
	 */
	public EnumItem getEnumItemByCode(String code){
		String hql = "from EnumItem where code = ?";
		return findOne(hql, code);
	}
}
